name: Remark

on:
  push:
    branches:
      - auto
      - try
  pull_request:
    paths:
    - '**.md'

jobs:
  remark:
    runs-on: ubuntu-latest

    steps:
    # Setup
    - name: Checkout
      uses: actions/checkout@v4

    - name: Setup Node.js
      uses: actions/setup-node@v3
      with:
        node-version: '18.x'

    - name: Install remark
      run: npm install remark-cli remark-lint remark-lint-maximum-line-length remark-preset-lint-recommended remark-gfm

    - name: Install mdbook
      run: |
        mkdir mdbook
        curl -Lf https://github.com/rust-lang/mdBook/releases/download/v0.4.34/mdbook-v0.4.34-x86_64-unknown-linux-gnu.tar.gz | tar -xz --directory=./mdbook
        echo `pwd`/mdbook >> $GITHUB_PATH

    # Run
    - name: Check *.md files
      run: ./node_modules/.bin/remark -u lint -f .

    - name: Linkcheck book
      run: |
        rustup toolchain install nightly --component rust-docs
        curl https://raw.githubusercontent.com/rust-lang/rust/master/src/tools/linkchecker/linkcheck.sh -o linkcheck.sh
        sh linkcheck.sh clippy --path ./book

    - name: Build mdbook
      run: mdbook build book

  # These jobs doesn't actually test anything, but they're only used to tell
  # bors the build completed, as there is no practical way to detect when a
  # workflow is successful listening to webhooks only.
  #
  # ALL THE PREVIOUS JOBS NEED TO BE ADDED TO THE `needs` SECTION OF THIS JOB!

  end-success:
    name: bors remark test finished
    if: github.event.pusher.name == 'bors' && success()
    runs-on: ubuntu-latest
    needs: [remark]

    steps:
      - name: Mark the job as successful
        run: exit 0

  end-failure:
    name: bors remark test finished
    if: github.event.pusher.name == 'bors' && (failure() || cancelled())
    runs-on: ubuntu-latest
    needs: [remark]

    steps:
      - name: Mark the job as a failure
        run: exit 1
